package com.siyin;

public class HelloWorld {
    public static void main(String[] args) {
        /*int a = 072;                //8进制
        int b = 0x12;               //16进制
        int c = 0b1011;             //2进制
        int d = 555555555;          //5亿左右 在int范围内
        long e = 5555555555l;         //55亿，在int范围外
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println(e);*/

        //浮点数是不精确的，尽量不要做比较
        /*
        float d3= 0.1f;
        double d4 = 1.0/10;
        System.out.println(d4);
        System.out.println(d3==d4);  //本来应该相等，都是0.1，但会输出flase。因为d3定义成为了float类型

        float d5 = 43352655l;
        float d6 = d5+1;
        System.out.println(d5==d6);  */  //本来应该是不相等，但这里会输出true，因为8位数字超出了float的精度范围，加1减1对值没有影响

        //字符
       /* char echar = 'a';
        char cchar = '中';
        char uchar = '\u0061';
        System.out.println(echar);
        System.out.println(cchar);
        System.out.println(uchar);

        String str = "我爱中国";     //java内部的字符串不是基本类型，而是一个类
        */

        //测试运算符
        //算数运算符
        /*int a =3;
        long b =4;
        //int c = a+b;
        long c = a+b;
        System.out.println(c);*/

        //关系运算符的比较
        /*char d = 'f';
        System.out.println((int)d);  //char值位于0~65535之间。通过（int）强制类型转化为int后可以看到对应的数字
        System.out.println(d>100);*/

        //逻辑运算符
        /*boolean b1 = true;
        boolean b2 = false;
        System.out.println(b1&b2); //falsse
        System.out.println(b1|b2); //true
        System.out.println(!b2); //true
        System.out.println(b1^b2); //true
        //短路与短路或
        //int g = 3/0;
        boolean b3 = 1>2 && (4<3/0);
        //boolean b3 = 1>2 & (4<3/0);   //不用短路与，前后都会运算，会预算3/0，程序异常
        */

        //位运算符
        /*int a = 7;
        int b = 8;
        System.out.println(a&b);  //注意形式跟上面的很像，但要定义左右操作数都是整数 ，按位与，两个都是1才为1，结果为0
        System.out.println(a|b);  //按位或，有一个为1就是1 ，结果为15
        System.out.println(a^b);  //按位异或，不同才为1，结果为15
        System.out.println(~b);   //结果为-9，涉及到补码操作
        //移位
        int c = 5<<2;  //左移，左移1次，相当于乘上2，左移2位，相当与乘上2次2.
        System.out.println(c);  // 5*2*2 = 20
        System.out.println(20>>3); //右移，右移一次相当于除以2。这里右移了3次，相当于除了3次2.20/2/2/2=2（整除）
        */

        //字符串拼接符
/*
        //String a ="3";
        //int b =4;
        //System.out.println(a+b);  //字符串34

        int a = 3;
        int b = 4;
        System.out.println(a+b);  //数字7

        char c = 'h';
        char d = 'i';
        System.out.println(c+d);  //+是字符串连接符，不是字符连接符。字符相加，会默认转化成为unicode编码相加。结果为209
        System.out.println(""+c+d); //通过加上空字符串和字符串拼接符，转化成为字符串的拼接，结果为hi
*/

        //条件运算符
        /*int score = 90;
        String a = score<60?"不及格":"及格";
        System.out.println(a);
        */

        //测试自动类型转化
        int a = 2345;
        long b =a;
        //int c = b;  //java: 不兼容的类型: 从long转换到int可能会有损失 long类型不能自动转化位int



    }
}
